﻿#region << 文 件 说 明 >>

/*----------------------------------------------------------------
// 文件名称：EnumberCreditType
// 创 建 者：杨程
// 创建时间：2021/10/15 10:56:10
// 文件版本：V1.0.0
// ===============================================================
// 功能描述：
//
//
//----------------------------------------------------------------*/

#endregion

namespace Vampirewal.Core.Models;

/// <summary>
/// 
/// </summary>
public partial class EnumItem<TEnum> where TEnum : Enum
{
    public string Description { get; set; }
    public TEnum Value { get; set; }

    public override string ToString()
    {
        return Description; 
    }

    /// <summary>
    /// 将枚举转EnumItem集合
    /// </summary>
    /// <param name="filters">筛选条件</param>
    /// <returns></returns>
    public static List<EnumItem<TEnum>> GetEnumItems(params Func<TEnum, bool>[] filters)
    {
        var query = Enum.GetValues(typeof(TEnum)).Cast<TEnum>();

        foreach (var filter in filters)
        {
            if (filter != null)
            {
                query = query.Where(filter);
            }
        }

        return query.Select(s => new EnumItem<TEnum>
        {
            Description = s.GetDescription(),
            Value = s
        }).ToList();

    }

    
}